﻿/*
 				________________________________COPYRIGHT_______________________________________
				Die Veröffentlichung dieses Objektes ist Illegal und wird strafrechtlich verfolgt
				werden. Sollte es zu einer Veröffentlichung kommen werden wir die Daten des
				Herrausgebers fündig machen und Anzeige erstatten. Desweiteren ist
				auch jeglicher Besitz dieses Objektes Illegal und kann ebenfalls als Grund für
				eine Anzeige verwendet werden.
				Ausnahmen der veröffentlichung und verleihung gelten nur wenn der Grundbesitzer
				diese durchführt.
				Die Uhrheberrechte dieses Objektes liegen der Entwickler Gruppe CyberScripting vor. 
                © 2011.
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using cubeworld.World;

namespace cubeworld.ScreenManager
{
    class PauseScreen : Screen
    {
        List<Button> buttons = new List<Button>();
        KeyboardState oldState = Keyboard.GetState();

        //Events
        public void backtogame_onClick(object sender, EventArgs e)
        {
            MainGame.MouseVisible = false;
            Mouse.SetPosition(MainGame.Device.Viewport.Width / 2, MainGame.Device.Viewport.Height / 2);
            Data.CloseOverlayScreen();
        }

        public void exit_onClick(object sender, EventArgs e)
        {
            Data.CloseOverlayScreen();
            Data.SetScreen(new TitleScreen());
        }

        public override void Init()
        {
            MainGame.MouseVisible = true;
            base.Init();

            float x = Data.graphics.PreferredBackBufferWidth * 0.5f - (Data.buttonNormal.Width / 2);

            //Erstelle Buttons
            Button backtogame = new Button("Back to game", new Vector2(x, 20));
            backtogame.OnClick += new ClickEventHandler(backtogame_onClick);
            Button exit = new Button("Exit", new Vector2(x, 54));
            exit.OnClick += new ClickEventHandler(exit_onClick);
            buttons.Add(backtogame);
            buttons.Add(exit);
        }

        public override void Update(float elapsedTime)
        {
            foreach (Chunk c in Data.world.activeChunks)
            {
                if (c.IsChanged)
                    c.SaveChunk();
            }
            KeyboardState keyState = Keyboard.GetState();
            if (keyState.IsKeyUp(Keys.Escape) && oldState.IsKeyDown(Keys.Escape))
            {
                this.backtogame_onClick(this, EventArgs.Empty);
            }
            oldState = keyState;
            base.Update(elapsedTime);
        }

        public override void Render(float elapsedTime)
        {
            //Zeichne leicht schwarzen Hintergrund
            Data.spriteBatch.Draw(Data.bg50, new Rectangle(0, 0, Convert.ToInt32(Data.graphics.PreferredBackBufferWidth), Convert.ToInt32(Data.graphics.PreferredBackBufferHeight)), Color.White);
            //Zeichne Menü Buttons
            foreach (Button button in buttons)
            {
                button.Render(Data.spriteBatch);
            }

            base.Render(elapsedTime);
        }
    }
}
